"""
函数的使用
"""

# 函数的定义: 函数是组织好的、可重复使用的、用来实现特定功能的代码段

# 函数定义的语法
""""
def 函数名(传入参数)
    代码区
    return 返回值
    
先定义, 后使用;
传入参数可省略, 返回值可省略
"""


# 定义计算字符串长度的函数
def string_length(string):
    """
    计算字符串长度的函数
    :param string: 需要计算长度的字符串
    :return: 若传入的参数为字符串, 则返回对应字符串的长度;
             若传入的参数不为字符串, 则返回 Nome;
    """
    if type(string) != type('string'):
        print('输入内容不为字符串')
        return None

    length = 0
    for char in string:
        length += 1

    return length


# 计算字符串长度函数的使用
name = 'Blue'
print(string_length(name))
print(string_length(123))


# 嵌套函数的定义
def sum_of_from_one_to_index(index):
    """
    计算从 1 到 index - 1 的总和
    :param index: 边界值
    :return: 数序列的总和
    """
    if index == 0:
        return 0
    return int(sum_of_from_one_to_index(index - 1)) + index


# 嵌套函数的使用
print(sum_of_from_one_to_index(10))
print(sum_of_from_one_to_index(100))


# 当函数代码区没有返回值时, 函数的返回值为 None
# None 表示空的、无实际意义的意思;
# 函数返回 None 就表示当前函数没有返回什么有意义的内容;
def return_none():
    return None


result = return_none()
print(f'无返回值函数, 返回的内容为: {result}')
print(f'无返回值函数, 返回内容的类型为: {type(result)}')

# None 在 if 中的使用场景
print(return_none() is None)

# None 也用于声明无初始内容的变量
init_number = None
